#include "../User/BSP/gpio.h"

#include "main.h"

void BSP_GPIO_WritePin(BSP_GPIO_t pin, BSP_GPIO_LEVEL_t level) {
  switch (pin) {
    case BSP_GPIO_MOTOR_A_1:
      HAL_GPIO_WritePin(Motor_A_1_GPIO_Port, Motor_A_1_Pin,
                        (GPIO_PinState)level);
      break;
    case BSP_GPIO_MOTOR_A_2:
      HAL_GPIO_WritePin(Motor_A_2_GPIO_Port, Motor_A_2_Pin,
                        (GPIO_PinState)level);
      break;
    case BSP_GPIO_MOTOR_B_1:
      HAL_GPIO_WritePin(Motor_B_1_GPIO_Port, Motor_B_1_Pin,
                        (GPIO_PinState)level);
      break;
    case BSP_GPIO_MOTOR_B_2:
      HAL_GPIO_WritePin(Motor_B_2_GPIO_Port, Motor_B_2_Pin,
                        (GPIO_PinState)level);
      break;
    case BSP_GPIO_BOARD_LED:
      HAL_GPIO_WritePin(Board_LED_GPIO_Port, Board_LED_Pin,
                        (GPIO_PinState)level);
      break;
    case BSP_GPIO_SPI1_NCS:
      HAL_GPIO_WritePin(SPI1_NCS_GPIO_Port, SPI1_NCS_Pin, (GPIO_PinState)level);
      break;
    case BSP_GPIO_STBY:
      HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, (GPIO_PinState)level);
      break;
    default:
#ifdef DEBUG
      while (1) __NOP();
#else
      return;
#endif
  }
}
